//==========================================  
//
//  @ Project : Algoritmos Geneticos
//  @ File Name : Mutacao.java
//  @ Date : 25/08/2010
//  @ Author : Leanderson Andr�
//
//==========================================  

package sistemaClassificador.algoritmoGenetico;

import java.util.Random;


public class Mutacao
{
	public void operar(Regra r,double chanceMutacao, MersenneTwister geradorRandom) throws Exception
	{
		int i;
		int tamanho = r.size();
		boolean existeAtivo = false;
		while(!existeAtivo){
			for(i=0;i<tamanho;i++){
				double rand = geradorRandom.nextDouble();
		//		System.out.println("IF"+rand+"<"+chanceMutacao);
				if(rand<chanceMutacao){
					try {
			//			System.out.println("RegraAtual : Fitness:"+r.getFitness()+" Classe : "+r.getClasse());
			//		for(int x=0;x<tamanho;x++){
			//		System.out.println("Atributo: "+x+ r.getCondicao(x));
			//			}
						r.getCondicao(i).setAtivo(!r.getCondicao(i).isAtivo());					
					} catch (Exception e) {
						e.printStackTrace();
					}
					
				}
			}
	//		System.out.println("RegraNova : Fitness:"+r.getFitness()+" Classe : "+r.getClasse());
	//		for(int x=0;x<tamanho;x++){
	//			System.out.println("Atributo: "+x+ r.getCondicao(x));
	//		}
			for(int a=0;a<r.size();a++){
				try {
					if(r.getCondicao(a).isAtivo()){
						existeAtivo = true;
						break;
					}
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
	}
}
